package com.example.d2_regex;

import java.util.Scanner;

/**
 * 目标：校验用户输入的电话邮箱时间是否合法
 */
public class RegexTest3 {
    public static void main(String[] args) {
        checkPhone();
        checkEmail();
    }

    /**
     * 校验手机号
     */
    public static void checkPhone() {
        while (true) {
            System.out.print("请您输入您的电话号码(手机|座机): ");
            Scanner sc = new Scanner(System.in);
            String phone = sc.nextLine();
            // 手机号18676769999  区号010-3424242424 0104644535
            // 1[3-9]\d{9}:  1表示手机号以1开头 [3-9]表示第二位数字为3到9之间的任意一个数字 \d{9}表示接下来的9位数字可以是0到9之间的任意数字

            // (0\\d{2,7}-?[1,9]\d{4,19}):
            // 0：表示固定电话以0开头
            // \\d{2,7}：表示接下来的2到7位数字可以是0到9之间的任意数字,这部分通常表示区号
            // -?：表示区号和后面的部分之间可以有一个可选的连字符 -  ?表示要么出现一次也可以不出现
            // [1,9]：表示第一个非零数字,确保电话号码不以0开头
            // \d{4,19}：表示接下来的4到19位数字可以是0到9之间的任意数字,这部分通常表示具体的电话号码
            if (phone.matches("(1[3-9]\\d{9})|(0\\d{2,7}-?[1,9]\\d{4,19})")) {
                System.out.println("您输入的号码格式正确~~~");
                break;
            } else {
                System.out.println("您输入的号码格式不正确~~~");
            }
        }
    }

    /**
     * 校验邮箱
     */
    public static void checkEmail() {
        while (true) {
            System.out.println("请您输入您的邮箱： ");
            Scanner sc = new Scanner(System.in);
            String email = sc.nextLine();
            /*
             * 常见的邮箱
             * xiaoyu0009@163.com
             * 25143242@qq.com
             * xiaoyu@yu.com.cn
             */
            // \\w{2,}:
            // \\w：表示一个单词字符（字母、数字或下划线）
            // {2,}：表示至少两个单词字符,即用户名部分至少有两个字符
            // @:
            // 表示电子邮件地址中的 @ 符号
            // \\w{2,20}:
            // \\w：表示一个单词字符（字母、数字或下划线）
            // {2,20}：表示2到20个单词字符,即域名部分至少有两个字符,最多有20个字符
            // (\\.\\w{2,10}){1,2}:
            // \\.：表示一个点 .
            // \\w{2,10}：表示2到10个单词字符,即每个子域名部分至少有两个字符,最多有10个字符
            // {1,2}：表示上述部分（点和子域名）可以出现1到2次,即域名可以有一个或两个子域名部分
            if (email.matches("\\w{2,}@\\w{2,20}(\\.\\w{2,10}){1,2}")) {
                System.out.println("您输入的邮箱格式正确~~~");
                break;
            } else {
                System.out.println("您输入的邮箱格式不正确~~~");
            }
        }
    }
}
